//DEFINICION DE VARIABLES GLOBALES
var userAgent = navigator.userAgent.toLowerCase();
jQuery.browser = {
    version: (userAgent.match(/.+(?:rv|it|ra|ie|me)[\/: ]([\d.]+)/) || [])[1],
    chrome: /chrome/.test(userAgent),
    safari: /webkit/.test(userAgent) && !/chrome/.test(userAgent),
    opera: /opera/.test(userAgent),
    msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
    mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
};

var variablesGlobales = {
	    server:"http://intranet.sbd.com.co",
        URL: {
        //UPLOAD FILE
        urlUploadServlet:"UploadServlet",
        // USUARIO
        urlValidarUsuario: "/intranetserviciologin/LoginServicio/validarUsuario",
        urlmensajesNotificaciones: "/intranetserviciologin/LoginServicio/notificaciones",
        urlConsultaActa: "/intranetservicioacta/ActaServicio/consultarActas",
        enviarCorreoActas: "/intranetservicioacta/ActaServicio/enviarActasCorreo",
        urlinsertarUpdateActas: "/intranetservicioacta/ActaServicio/insertarUpdateActas",
        urlEliminarParticipante: "/intranetservicioacta/ActaServicio/eliminarPartipantes",
        urlEliminarTema: "/intranetservicioacta/ActaServicio/eliminarTema",
        urlEliminaraccion: "/intranetservicioacta/ActaServicio/eliminarAccion",
        urlconsultarUsuario: "/intranetserviciousers/UserServicio/consultarUsuarios",
        urlCrearUsuario: "/intranetserviciousers/UserServicio/crearModificarUsuario",
        urlModificarUsuario: "/intranetserviciousers/UserServicio/modificarUsuario",
        urlEliminarUsuario: "/intranetserviciousers/UserServicio/eliminarUsuario",
        urlconsultarRoles: "/intranetserviciousers/UserServicio/consultarRoles",
        urlCambiarClave: "/intranetserviciousers/UserServicio/cambiarClave",

        // CONTACTOS
        urlConsultarEmpresas: "/intranetserviciocontactos/ContactosServicio/consultarEmpresas",
        urlInsertarModificarEmpresas: "/intranetserviciocontactos/ContactosServicio/ingresarMoficarEmpresa",
        urlEliminarEmpresas: "/intranetserviciocontactos/ContactosServicio/eliminarEmpresa",
        urlconsultarContactos: "/intranetserviciocontactos/ContactosServicio/consultarContactos",
        urlingresarMoficarContacto:"/intranetserviciocontactos/ContactosServicio/ingresarMoficarContacto",


        //PROYECTOS
        urlConsultarProyectos: "/intranetservicioproyecto/ProyectoServicio/consultarTodosProyectos",
        urlCrearProyecto: "/intranetservicioproyecto/ProyectoServicio/crearProyecto",
        urlModificarProyecto: "/intranetservicioproyecto/ProyectoServicio/modificarProyecto",
        urlInsertarproyecto: "/intranetservicioproyecto/ProyectoServicio/validarProyecto",

        //INDICADORES
        urlInsertarIndicador: "/intranetservicioindicadores/IndicadorServicio/insertarIndicador",
        urlInsertarFormula: "/intranetservicioindicadores/IndicadorServicio/insertarFormula",
        urlConsultarTodasFormulas: "/intranetservicioindicadores/IndicadorServicio/consultarTodasFormulas",
        urlConsultarTodosIndicadores: "/intranetservicioindicadores/IndicadorServicio/consultarTodosIndicadores",
        urlModificarIndicador: "/intranetservicioindicadores/IndicadorServicio/modificarIndicador",
        urlModificarFormula: "/intranetservicioindicadores/IndicadorServicio/modificarFormula",
        urlConsultarIndicadoresAsignados: "/intranetservicioindicadores/IndicadorServicio/consultarIndicadoresAsignados",
        urlModificarIndicadoresAsignados: "/intranetservicioindicadores/IndicadorServicio/modificarIndicadoresAsignados",
        urlInsertarIndicadoresAsignados: "/intranetservicioindicadores/IndicadorServicio/insertarIndicadoresAsignados",
        urlConsultarDatosIndicadores: "/intranetservicioindicadores/IndicadorServicio/consultarDatosIndicadores",
        urlInsertarModificarDatosIndicadores: "/intranetservicioindicadores/IndicadorServicio/insertarModificarDatosIndicadores",
        urlConsultarIndicadorReporte: "/intranetservicioindicadores/IndicadorServicio/consultarIndicadorReporte",
        urlObtenerProyectosConIndicadores: "/intranetservicioindicadores/IndicadorServicio/obtenerProyectosConIndicadores",

        //EVALUACIONES
        urlinsertarPerfil: "/intranetservicioadminevaluacion/AdministracionServicio/insertarPerfil",
        urlconsultaPerfiles: "/intranetservicioadminevaluacion/AdministracionServicio/consultarPerfiles",
        urlmodificarPerfil: "/intranetservicioadminevaluacion/AdministracionServicio/modificarPerfil",
        urlconsultarBancoPreguntas: "/intranetservicioadminevaluacion/AdministracionServicio/consultarPreguntas",
        urlconsultarCategorias: "/intranetservicioadminevaluacion/AdministracionServicio/consultarCategorias",
        urlinsertarcategoria: "/intranetservicioadminevaluacion/AdministracionServicio/insertarCategorias",
        urlinsertarPregunta: "/intranetservicioadminevaluacion/AdministracionServicio/insertarPregunta",
        urleliminarPregunta: "/intranetservicioadminevaluacion/AdministracionServicio/eliminarPreguntas",
        urlConsultarEvaluaciones: "/intranetservicioadminevaluacion/AdministracionServicio/consultarEvaluaciones",

        //AGENDA
        urlConsultarAgenda: "/intranetservicioagendas/AgendaServicio/obtenerAgenda",
        urlConsultarContactosEvento: "/intranetservicioagendas/AgendaServicio/obtenerContactos",
        urlInsertarModificarEventoAgenda:"/intranetservicioagendas/AgendaServicio/IngresarMoficarEvento",
        urleliminarContactoEvento:"/intranetservicioagendas/AgendaServicio/eliminarContactoEvento",
        url_salir: "/intranetserviciologin/LoginServicio/logout" ,
        //url_cerrarsession: "/vista-intranet/",
        url_cerrarsession: "/",
        //   PROCESSOS
        urlconsultarProcesos:"/intranetservicioprocesos/ProcesosServicio/consultarProcesos",
        urlInsertarModificarActividadProcesos:"/intranetservicioprocesos/ProcesosServicio/insertarModificarActividad" ,
        urlInsertarModificarProcesos:"/intranetservicioprocesos/ProcesosServicio/insertarModificarProceso",
        urlEliminarActividadProcesos:"/intranetservicioprocesos/ProcesosServicio/eliminarActividadProceso",
        urlImprimirProcesosEjecutado:"/intranetservicioprocesos/ProcesosServicio/imprimirProcesosEjecutado",
        urlImprimirProceso:"/intranetservicioprocesos/ProcesosServicio/imprimirProceso"
    },
    datosUsuario: {
    },
    token: ""
};


String.prototype.capitalize = function () {
    return this.replace(/\S+/g, function (a) {
        return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase();
    });
};

String.prototype.reducirCadena = function (tamano) {
    if (this.length > tamano) {
        return this.substring(0, 20) + '...';
    } else {
        return this;
    }
};
// prototipos anti-bobo, por si se utiliza "capitalize" con variables
// tipo Number o Boolean. No previene el mal uso de null o de undefined.
Number.prototype.capitalize = function () {
    return ''
};
Boolean.prototype.capitalize = function () {
    return ''
};
String.prototype.formatoFecha = function () { //v1.0
    var fecha = this.replace('/', '-');
    fecha = fecha.replace('/', '-');
    return fecha;
};

String.prototype.isEmpty = function () {
    return (this == null) || (this == '') || (this == undefined);
}
// Empty: devuelve verdadero si value es vacio
/**
 * @return {boolean}
 * @return {boolean}
 */
function Empty(value) {
    var pattern = new RegExp("^[ ]*$");
    if (value.match) {
        return value.match(pattern) || value.length == 0;
    } else {
        return false;
    }
}
function isPeso(value) {
    var pattern = new RegExp("^([0-9]*\.[0-9]+|[0-9]+)$");
    return value.match(pattern);
}
function isTelefono(value) {
    var pattern = new RegExp("^[0-9]{10}$");
    return value.match(pattern);
}
// isInteger: devuelve verdero si value es un entero
function isInteger(value) {
    var pattern = new RegExp("^[0-9]+$");
    return value.match(pattern);
}

// isMoney: devuelve verdadero si un valor es tipo moneda
function isMoney(value, isEnglish) {
    if (isEnglish) {
        var pattern = new RegExp("^[0-9]+(\\.[0-9]+){0,1}$");
        return value.match(pattern);
    } else {
        var pattern = new RegExp("^[0-9]+(,[0-9]+){0,1}$");
        return value.match(pattern);
    }
}
// isMail: devuelve verdadero si value es una direccion de correo valida
function isMail(value) {
    var pattern = new RegExp("^([a-zA-Z0-9_\\-]+\\.{0,1})+@([a-zA-Z0-9_\\-]+\\.)+[a-zA-Z0-9_\\-]+$");
    return value.match(pattern);
}
// isWeb: devuelve verdadero si value es una direccion de web v�lida
function isWeb(value) {
    var pattern = new RegExp("http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?");
    return value.match(pattern);
}
//isTlfMovil: devuelve verdadero si value es un numero movil en formato 0000-0000000
function isTlfMovil(value) {
    var pattern2 = new RegExp("^[0-9]{4}[-][0-9]{7}$");
    return value.match(pattern2);
}

// isDate: devuelve verdadero si value es una fecha valida en formato dd/mm/aaaa
function isDate(value) {
    var pattern2 = new RegExp("^(0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[](19|20)[0-9]{2}$");

    if (value.match(pattern2)) {
        /*if (parseInt(value.substr(6, 4)) % 4 != 0 && parseInt(value.substr(3, 2)) == 2 && parseInt(value.substr(0, 2)) == 29) {
         return false;
         } else {
         return true;
         }*/
        //Rafael Ferrero 03/12/2009 Registro de siniestros automovil web.
        var dia = parseInt(value.substring(0, 2), 10);
        var mes = parseInt(value.substring(3, 5), 10);
        var anio = parseInt(value.substring(6), 10);
        switch (mes) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                numDias = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                numDias = 30;
                break;
            case 2:
                if (( anio % 100 != 0) && ((anio % 4 == 0) || (anio % 400 == 0))) {
                    numDias = 29
                }
                else {
                    numDias = 28
                }
                break;
            default:
                return false;
        }
        if (dia > numDias || dia == 0) {
            return false;
        }

        return true;
    } else {
        var fechaArr = value.split('-');
        var aho = fechaArr[0];
        var mes = fechaArr[1];
        var dia = fechaArr[2];

        var fechaa = new Date(aho, mes - 1, dia);//mes empieza de cero Enero = 0

        if (!fechaa || fechaa.getFullYear() == aho && fechaa.getMonth() == mes - 1 && fechaa.getDate() == dia) {
            return true;
        } else {
            return false;
        }
    }
}
// isAlpha: devuelve verdadero si la cadena contiene solo caracteres alfabeticos
// o espacios
function isAlpha(value) {
    var pattern = new RegExp("^[a-zA-Z\\s]+$");
    return value.match(pattern);
}
// isAlphaNum: devuelve true si el valor contiene s�lo caracteres alfabeticos (may�sculas o min�sculas)
// o n�meros, incluye espacios en blanco
function isAlphaNum(value) {
    var pattern = new RegExp("^[A-z0-9\s]+$");
    return value.match(pattern);
}

//isDirIP: devuelve verdadero si value es una direccion ip en formato xxx.xxx.xxx.xxx
function isDirIP(value) {
    var pattern2 = new RegExp("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
        "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
    if (value.match(pattern2)) {
        return true;
    } else {
        return false;
    }
}

// LTrim: Quita espacios en blanco a la izquerda de una cadena
function LTrim(value) {
    var pattern = new RegExp("^\\s+", "g")
    return value.replace(pattern, "");
}
// RTrim: Quita espacios en blanco a la derecha de una cadena
function RTrim(value) {
    var pattern = new RegExp("\\s+$", "g")
    return value.replace(pattern, "");
}
// Trim: Quita espacios en blanco a la derecha y a la izquierda de una cadena
function Trim(value) {
    return RTrim(LTrim(value));
}


function sendServiceJSON(uriRestService, JsonData, funcionOnSuccess, funcionOnRequest, funcionOnFailure) {
    var seguridad = {token : variablesGlobales.token};
    JsonData.seguridad = seguridad;
    $.ajax({
        cache:false,
        type: 'Post',
        url: uriRestService,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(JsonData),
        dataType: 'json',
        async: true,
        success: function(data){
            if(data=="2"){
                sessionStorage.removeItem("variablesGlobales");
                redireccionar(variablesGlobales.URL.url_cerrarsession);
            }else
            if(data=="-1"){
                failedAjax();
            }
            else
            {
                funcionOnSuccess(data)
            }
        }
    });
};


function sendServiceJSON_noGlobal(uriRestService, JsonData, funcionOnSuccess) {
    var seguridad = {token : variablesGlobales.token};
    JsonData.seguridad = seguridad;
    $.ajax({
        cache:false,
        type: 'Post',
        global: false,
        url: uriRestService,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(JsonData),
        dataType: 'json',
        async: false,
        success: function(data){
            if(data=="2"){
                sessionStorage.removeItem("variablesGlobales");
                redireccionar(variablesGlobales.URL.url_cerrarsession);
            }else
            if(data=="-1"){
                failedAjax();
            }
            else
            {
                funcionOnSuccess(data)
            }
        }
    });

}



function sendServiceJSON_noGlobal_crossDomain(uriRestService, JsonData, funcionOnSuccess) {
    var seguridad = {token : variablesGlobales.token};
    JsonData.seguridad = seguridad;
    $.ajax({
        cache:false,
        type: 'GET',
        global: false,
        crossDomain: true,
        dataType: 'json',
        url: uriRestService,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(JsonData),
        async: false,
        success: function(data){
            if(data=="2"){
                sessionStorage.removeItem("variablesGlobales");
                redireccionar(variablesGlobales.URL.url_cerrarsession);
            }else
            if(data=="-1"){
                failedAjax();
            }
            else
            {
                funcionOnSuccess(data)
            }
        }
    });
}

function redireccionar(RUTA) {
    setTimeout("location.href='" + RUTA + "'", 10);
}


//Funci�n que crea las notificaciones
function notify(msg, speed, fadeSpeed, type) {

    //Borra cualquier mensaje existente
    $('.notify').remove();

    //Si el temporizador para hacer desaparecer el mensaje est�
    //activo, lo desactivamos.
    if (typeof fade != "undefined") {
        clearTimeout(fade);
    }

    //Creamos la notificaci�n con la clase (type) y el texto (msg)
    $('body').append('<div class="notify ' + type + '" style="display:none;position:fixed;left:10"><p>' + msg + '</p></div>');

    //Calculamos la altura de la notificaci�n.
    notifyHeight = $('.notify').outerHeight();

    //Creamos la animaci�n en la notificaci�n con la velocidad
    //que pasamos por el parametro speed
    $('.notify').css('top', -notifyHeight).animate({top: 10, opacity: 'toggle'}, speed);

    //Creamos el temporizador para hacer desaparecer la notificaci�n
    //con el tiempo almacenado en el parametro fadeSpeed
    fade = setTimeout(function () {

        $('.notify').animate({top: notifyHeight + 10, opacity: 'toggle'}, speed);

    }, fadeSpeed);

}


function blanquearFormularios() {
    $(".inputFormulario").each(function () {
        this.value = "";
    });

    $(".selectFormulario").each(function () {
        this.value = "-1";
    });

    $(".spanFormulario").each(function () {
        $("#" + this.id).html("");
    });

    $(".checkFormulario").each(function () {
        $("#" + this.id).prop('checked', false);
    });

}


function sendServiceJSONSync(uriRestService, JsonData, funcionOnSuccess, funcionOnRequest, funcionOnFailure) {
    var seguridad = {token : variablesGlobales.token};
    JsonData.seguridad = seguridad;
    $.ajax({
        cache:false,
        async: false,
        type: 'POST',
        url: uriRestService,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(JsonData),
        dataType: 'json',
        success: function(data){
            if(data=="2"){
                sessionStorage.removeItem("variablesGlobales");
                redireccionar(variablesGlobales.URL.url_cerrarsession);
            }else
            if(data=="-1"){
                failedAjax();
            }
            else
            {
                funcionOnSuccess(data)
            }
        }
    });


}


function tablas(idDiv, idTable, tabla, contenidoTabla, funcionTd) {

    var contenedor = $("#" + idDiv);
    contenedor.empty();
    var table = $(document.createElement('table')).appendTo(contenedor);
    table.attr("id", idTable);
    var thead = $(document.createElement('thead')).appendTo(table);
    var tr = $(document.createElement('tr')).appendTo(thead);

    $.each(tabla, function (q, item) {
        var th = $(document.createElement('th')).appendTo(tr);
        th.html(item);
    })

    var tbody = $(document.createElement('tbody')).appendTo(table);

    $.each(contenidoTabla, function (q, item) {
        var tr = $(document.createElement('tr')).appendTo(tbody);
        for (var i = 0; i < tabla.length; i++) {
            var td = $(document.createElement('td')).appendTo(tr);
            td.html(eval("item." + tabla[i].toLowerCase() + "$" + setnumero(i)));
            td.attr("id", tabla[i].toLowerCase() + i + q);
            if (funcionTd != null) {
                funcionTd(td);

            }
        }
    });


    var oTable = $('#' + idTable).dataTable();


    return $('#' + idTable);

}

function tablas_v2(idDiv, idTable, tabla, contenidoTabla, funcionTd) {

    var contenedor = $("#" + idDiv);
    contenedor.empty();
    var table = $(document.createElement('table')).appendTo(contenedor);
    table.attr("id", idTable);
    var thead = $(document.createElement('thead')).appendTo(table);
    var tr = $(document.createElement('tr')).appendTo(thead);

    $.each(tabla, function (q, item) {
        var th = $(document.createElement('th')).appendTo(tr);
        th.html(item);
    })

    var tbody = $(document.createElement('tbody')).appendTo(table);

    $.each(contenidoTabla, function (q, item) {
        var tr = $(document.createElement('tr')).appendTo(tbody);
        for (var i = 0; i < tabla.length; i++) {
            var td = $(document.createElement('td')).appendTo(tr);
            td.html(eval("item." + tabla[i].toLowerCase() + "$" + setnumero(i)));
            td.attr("id", tabla[i].toLowerCase() + i + q);

            if (td.attr("id").indexOf("nombrepozo") != -1) {
                var codDia = td.html();
                var a = $(document.createElement('a')).appendTo(td);
                a.attr('href', '#');
                a.attr('id', codDia + "_" + td.attr('id'));
                a.html(codDia);
                td.html('');
                td.append(a);
            }
            if (funcionTd != null) {
                td.click(function () {
                    funcionTd(item.detallepozolist);
                });
            }
        }
    });


    var oTable = $('#' + idTable).dataTable();


    return $('#' + idTable);

}


function togglesFormulario(idformulario) {
    $("#" + idformulario + " .formularioInput").keyup(function () {
        if (validarFormulario($(this))) {
            $(this).closest('li').find(" + li").removeClass("disable").addClass("enable");
        } else {
            $(this).closest('li').find(" ~ li.enable").removeClass("enable").addClass("disable");
        }
    });
}


function validarFormulario(formulario) {
    return false;

    if ((formulario.hasClass('obligatorio')) && (formulario.val().length > 0)) {
        return true;
    } else if ((formulario.attr("class").indexOf("cadena4") != -1) && (formulario.val().length > 3) && (isAlpha(formulario.val()))) {
        return true;
    } else if ((formulario.attr("class").indexOf("cadena2") != -1) && (formulario.val().length > 1)) {
        return true;
    } else if ((formulario.attr("class").indexOf("numeric4") != -1) && (formulario.val().length > 3)) {
        return true;
    } else if ((formulario.attr("class").indexOf("direccIP") != -1) && (isDirIP(formulario.val()))) {
        return true;
    } else if ((formulario.attr("class").indexOf("email4") != -1) && (isMail(formulario.val()))) {
        return true;
    } else if ((formulario.attr("class").indexOf("tlfmovil4") != -1) && (isTelefono(formulario.val()))) {
        return true;
    } else if ((formulario.attr("class").indexOf("cadenaPass") != -1) && ((formulario.val().length > 3))) {
        return true;
    } else if ((formulario.attr("class").indexOf("cadenaDescrip") != -1) && ((formulario.val().length > 3))) {
        return true;
    } else if ((formulario.attr("class").indexOf("isNumber") != -1) && (isInteger(formulario.val()))) {
        return true;
    } else if ((formulario.attr("class").indexOf("isDate") != -1) && (isDate(formulario.val()))) {
        return true;
    }


}

function startAjax() {

    $("#overload_cargar").fadeIn("slow");

}

function stopAjax() {

    $("#overload_cargar").fadeOut("slow");

}

function failedAjax() {

    $("#overload_cargar").fadeOut("slow");
    notify('La aplicación no se encuentra disponible, intente mas tarde.', 500, 5000, 'error');


}

function loadingCompleted() {

}


function setnumero(valor) {
    var n;
    valor = valor + 1;
    n = valor;
    if (valor < 10) {
        n = "0" + valor;
    }

    return n;
}

var tips;

$(document).ready(function () {
    $("#overload_cargar").hide();

    $(document).ajaxStart(startAjax)
        .ajaxStop(stopAjax)
        .ajaxError(failedAjax);

//    $.getScript( "resources/js/base/test.js", function( data, textStatus, jqxhr ) {
//        console.log( data ); // Data returned
//        console.log( textStatus ); // Success
//        console.log( jqxhr.status ); // 200
//        console.log( "Load was performed." );
//    });


});


function tablaVertical(idDiv, idTable, encabezado, contenidoTabla, funcionTd) {


    var contenedor = $("#" + idDiv);
    contenedor.empty();
    var table = $(document.createElement('table')).appendTo(contenedor);
    table.attr("id", idTable);


    for (var i = 0; i < encabezado.length; i++) {
        var tr = $(document.createElement('tr')).appendTo(table);
        var th = $(document.createElement('th')).appendTo(tr);
        var td = $(document.createElement('td')).appendTo(tr);
        th.html(encabezado[i]);
        td.html(contenidoTabla[0][encabezado[i].toLowerCase() + "$" + setnumero(i)]);
        td.attr("id", encabezado[i].toLowerCase() + i + 0);
        if (funcionTd != null) {
            funcionTd(td);

        }
    }


    function setnumero(valor) {
        var n;
        valor = valor + 1;
        n = valor;
        if (valor < 10) {
            n = "0" + valor;
        }

        return n;
    }

    return $('#' + idTable);

}


/*
 * RODOLFO RIVAS
 * TABLA FORMATO AGREGAR,ELIMINAR,MODIFICAR
 *
 * */

function crearGestionDeNegocio(divContenedor, data, negocio, funcioncargarAgregar, funcionEliminar, funcioncargarModificar, jqueryDataTable, optionDataTable, htmlFormulario, cargarView, botonesDialogoAgregar, botonesDialogoModificar) {

    var defaultOptionDialog = {
        autoOpen: false,
        height: 350,
        width: 400,
        modal: true,
        resizable: false
    };


    var defaulOptionDataTable = {
        "iDisplayLength": 10,
        "bDestroy": true,
        "bJQueryUI": true,
        "bFilter": true,
        "bPaginate": true,
        "bSort": true,
        "oLanguage": {
            "sZeroRecords": "No Hay Informaci&oacute;n",
            "sInfo": "",
            "sInfoEmpty": ""
        }
    };
    // DIV TABLA
    divContenedor.empty();
    var keyList = [];
    // DIV BOTONES
    var divBotones = $("<div style='margin-bottom: 10px;text-align: right;'></div>").appendTo(divContenedor);
    var table = $(document.createElement('table')).appendTo(divContenedor);
    table.attr("style", "width:90%");

    // CREA CABECERA
    var thead = $(document.createElement('thead')).appendTo(table);
    var trHead = $(document.createElement('tr')).appendTo(thead);
    if (data.codigo != -1) {
        var column_class = [];
        if (data.listatable.length > 0){
            $.each(data.listatable[0], function (key, value) {
                if (value != null) {
                    if (value.visible_tabla) {
                        var th = $(document.createElement('th')).appendTo(trHead);
                        th.html(value.label);
                    }
                    keyList.push(key);
                    column_class.push({ "sClass": "center" });
                }
            });
        }
        if ((botonesDialogoModificar != null) || (funcionEliminar != null) || (cargarView != null)) {
            $(document.createElement('th')).appendTo(trHead);
        }

        // CREA BODY
        var tbody = $(document.createElement('tbody')).appendTo(table);
        var botonA, botonM, botonE;

        $.each(data.listatable, function (posLista, item) {
            var tr = $(document.createElement('tr')).appendTo(tbody);
            $.each(keyList, function (posKey, itemKey) {
                if (item[itemKey].visible_tabla) {
                    var td = $(document.createElement('td')).appendTo(tr);
                    td.html(item[itemKey].value.reducirCadena(40));
                    td.attr("title",item[itemKey].value);
                }
            });

            if ((botonesDialogoModificar != null)  || (funcionEliminar != null) || (cargarView != null)) {
                var td = $(document.createElement('td' )).appendTo(tr);
            }


            if ((botonesDialogoModificar != null)) {
                botonM = $('<button"> <img src="modules/principal/resources/images/modificar.png"> </button>').appendTo(td);
                botonM.button();
                botonM.click(function () {
                    dialogo.removeClass("oculto");
                    if (funcioncargarModificar != null)
                        funcioncargarModificar(data.lista[posLista]);

                    $("#"+htmlFormulario+" .dialog_botones").empty();
                    $.each(botonesDialogoModificar,function(pos,item){
                        var botonCrear= $('<input  class="boton_dialog" type="button" value="'+item.nombreBoton+'">').appendTo($("#"+htmlFormulario+" .dialog_botones"));
                        botonCrear.click(function(){
                            item.accion();
                        });
                    });
           
                });
            }

            if (funcionEliminar != null) {
                botonE = $('<button"> <img src="modules/principal/resources/images/papelera.png"> </button>').appendTo(td);
                botonE.button();
                botonE.click(function () {
                    funcionEliminar(this, data.lista[posLista]);
                });
            }

            if (cargarView != null) {
                var botonV = $('<button style="color:red"> <img src="modules/principal/resources/images/papelera.png"> </button>').appendTo(td);
                botonV.button();
                botonV.click(function () {
                    cargarView(data.lista[posLista]);
                    dialogo.removeClass("oculto");
                });
            }

        });

    } else {
        notify(data.mensaje, 900);
    }
    if (botonesDialogoAgregar != null) {
        botonA = $('<button> Agregar ' + negocio + ' </button>').appendTo(divBotones);
        botonA.button();
        botonA.click(function () {
            dialogo.removeClass("oculto");
            if (funcioncargarAgregar != null)
                funcioncargarAgregar();

            $("#"+htmlFormulario+" .dialog_botones").empty();
            $.each(botonesDialogoAgregar,function(pos,item){
                var boton= $('<input  class="boton_dialog" type="button" value="'+item.nombreBoton+'">').appendTo($("#"+htmlFormulario+" .dialog_botones"));
                boton.click(function(){
                     $(".obligatorios").removeClass("ui-state-error");
                    if (validarFormulariosGestionNegocio($("#"+htmlFormulario).find(".obligatorio"))) {
                        item.accion();
                        $("#"+htmlFormulario).addClass("oculto");
                    }
                });
            });
        });


    }


    $("#"+htmlFormulario+" .boton_dialog_cerrar").click(function(){
        $("#"+htmlFormulario).addClass("oculto");
    });


    var dialogo = $("#"+htmlFormulario);
    dialogo.addClass("dialogo_negocio");
    if (data.codigo != -1) {

        if (jqueryDataTable) {
            if (optionDataTable != null) {
                table = table.dataTable(optionDataTable);
            } else {
                table = table.dataTable(defaulOptionDataTable);
            }
            return table;
        }
    }

}


function updateTips(t) {
    $("<li>" + t + "</li>").appendTo(tips).closest("ul").addClass("ui-state-highlight");
}

function crearElementoEntrada(key, value, contenedor) {
    var elemento;
    if (value.type == "input") {
        elemento = $('<input type="text" name="' + key + '" id="' + key + '" class="text ui-widget-content ui-corner-all form inputForm">').appendTo(contenedor);
    } else if (value.type == "select") {
        var param = {};
        param.key = key;
        param.contenedor = contenedor;
        //sendServiceJSONSync(value.funcionCargar,param,funcionCargarSelect,null,null);
        auxGestionNegocio = [
            {text: "Masculino", value: "1"},
            {text: "Femenino", value: "2"}
        ];
        elemento = $('<select id="agregar_' + key + '" class="text ui-widget-content ui-corner-all form selectForm">').appendTo(contenedor);
        $.each(auxGestionNegocio, function (pos, item) {
            $("<option val  ue=" + item.value + ">" + item.text + "</option>").appendTo(elemento)
        })
    } else if (value.type == "textarea") {
        elemento = $('<textarea name="' + key + '" id="' + key + '" row="5" col="30" class="text ui-widget-content ui-corner-all form inputForm">').appendTo(contenedor);
    }

    if (value.obligatorio)
        elemento.addClass("obligatorio");

}

var auxGestionNegocio;
function funcionCargarSelect(data) {
    //auxGestionNegocio=data;

}


function validarFormulariosGestionNegocio(listaElementos) {
    var bValid = true;
    tips = $(".validateTips");
    tips.html("");
    $.each(listaElementos, function (pos, item) {
        if (!validarElemento($(item)))
            bValid = false;
    });
    return bValid;
}


function validarElemento(elemento) {

    var campoName;

    if ((elemento.attr("name") == null) || (elemento.attr("name") == '') || (elemento.attr("name") == undefined))
        campoName="Campo sin nombre";
    else
        campoName = elemento.attr("name").replace("_", " ").replace("_", " ").replace("_", " ").replace("_", " ");

    if ((elemento[0].tagName.toUpperCase() == "INPUT") && ((elemento[0].type.toUpperCase() == "TEXT") || (elemento[0].type.toUpperCase() == "PASSWORD"))) {

        if ((elemento.hasClass('obligatorio')) && (elemento.val().length < 1)) {
            elemento.addClass("ui-state-error");
            elemento.attr("title", "El campo <b>'" + campoName + "'</b> es obligatorio");
            updateTips("El campo <b>'" + campoName + "'</b> es obligatorio");
            return false;
        }

        if ((elemento.hasClass('cadena4')) && (elemento.val().length < 4)) {
            elemento.addClass("ui-state-error");

            updateTips("El tamaño del campo <b>'" + campoName + "'</b>   no puede ser menor a 4 caracteres ");
            return false;
        }
        if ((elemento.hasClass('cadena3')) && (elemento.val().length < 3)) {
            elemento.addClass("ui-state-error");
            updateTips("El tamaño del campo <b>'" + campoName + "'</b>  no puede ser menor a 3 caracteres ");
            return false;
        }
        if ((elemento.hasClass('cadena2')) && (elemento.val().length < 2)) {
            elemento.addClass("ui-state-error");
            updateTips("El tamaño del campo <b>'" + campoName + "'</b>  no puede ser menor a 3 caractteres ");
            return false;
        }
        if ((elemento.hasClass("direccIP")) && (!isDirIP(elemento.val()))) {
            elemento.addClass("ui-state-error");
            updateTips("El campo <b>'" + campoName + "'</b>  debe tener un formato de IP ");
            return false;
        }
        if ((elemento.hasClass("email")) && (!isMail(elemento.val()))) {
            elemento.addClass("ui-state-error");
            updateTips("El campo <b>'" + campoName + "'</b> debe tener un formato de Email ");
            return false;
        }
        if ((elemento.hasClass("tlfmovil")) && (!isTelefono(elemento.val()))) {
            elemento.addClass("ui-state-error");
            updateTips("El campo <b>'" + campoName + "'</b> debe tener un formato de Telefono ");
            return false;
        }
        if ((elemento.hasClass("isNumber")) && (!isInteger(elemento.val()))) {
            elemento.addClass("ui-state-error");
            updateTips("El campo <b>'" + campoName + "'</b> debe tener un formato numerico ");
            return false;
        }
        if ((elemento.hasClass("isDate")) && (!isDate(elemento.val()))) {
            elemento.addClass("ui-state-error");
            updateTips("El campo <b>'" + campoName + "'</b> debe tener un formato Date ");
            return false;
        }

    } else if ((elemento[0].tagName.toUpperCase() == "TEXTAREA")) {
        if ((elemento.hasClass('obligatorio')) && (elemento.val().length < 1)) {
            elemento.addClass("ui-state-error");
            elemento.attr("title", "El campo <b>'" + campoName + "'</b> es obligatorio");
            updateTips("El campo <b>'" + campoName + "'</b> es obligatorio");
            return false;
        }
    } else if ((elemento[0].tagName.toUpperCase() == "SPAN") || (elemento[0].tagName.toUpperCase() == "DIV") || (elemento[0].tagName.toUpperCase() == "TD")) {
        if (((elemento.hasClass('obligatorio')) && (elemento.hasClass('editable')) && (elemento.html() == "(click para editar)")) || ((elemento.hasClass('obligatorio')) && (!elemento.hasClass('editable')) && (elemento.html() == ""))) {
            elemento.addClass("ui-state-error");
            elemento.attr("title", "El campo <b>'" + campoName + "'</b> es obligatorio");
            updateTips("El campo <b>'" + campoName + "'</b> es obligatorio");
            return false;
        }
    }

    elemento.removeClass("ui-state-error");

    return   true;


}


function textarea_count(_class){
    $.each($("."+_class),function(pos,item){
        $(item).textareaCount({
            'maxCharacterSize': parseInt($(item).attr("title")),
            'originalStyle': 'originalTextareaInfo',
            'displayFormat' : '#input/#max caracteres'
        });
    });
}



